/*
*********************************************************************************************************
*
*	文件名称：system.h_
*	版    本: V1.0
*	说		明: 用户程序头文件，接口定义
*	作    者：zlh
*
*		版本号  日期        作者      说明
*		V1.0    2023-04-04  zlh   		首版
*********************************************************************************************************
*/
#ifndef  _SYSTEM_H_
#define  _SYSTEM_H_

#include <stdio.h>
#include <stdlib.h>
#include <string.h> 
#include "fldrv_board.h"
#include "at32f425_clock.h"
#include "at32f425_int.h"
#include "FreeRTOS.h"
#include "task.h"
#include "at32f425_misc.h"
#include "at32f425_tmr.h"
#include "fldrv_board.h"
#include "fldrv_uart.h"
#include "fldrv_i2c.h"
#include "fldrv_adc.h"
#include "fldrv_pwm.h"
#include "fldrv_flash.h"
#include "flapp_display.h"
#include "flapp_t_h.h"
#include "flapp_user.h"
#include "flapp_net.h"
#include "flapp_rs485.h"
#include "flapp_tmr.h"

#define SW_SERVICE_FOR_PRO 					//正式服
#define SW_LOG_SYS_PRINTF						//系统信息调试开关
#define SW_LOG_IMP_PRINTF						//重要信息调试开关
#define SW_LOG_COM_PRINTF 					//公共调试信息开关，正式版需要关闭
#define SW_OTA_USE_INTERNAL_FLASH 
#define SW_POWER_ON_WAIT						//上电延时

//boot: 2k
//param: 1k
//bin :
//bat bin:
#define APP_START_ADDR							0x08002000  
#define IAP_UPGRADE_FLAG_ADDR				(APP_START_ADDR-2048)
#define IAP_UPGRADE_FLAG_ADDR_BAT		(APP_START_ADDR-1024)

// 用户的APP code收到上位机0x5AA5命令后，会设置此标志，表示后续将进行APP更新，详见应用指南
#define IAP_UPGRADE_FLAG 			0x44475955 

#ifdef SW_OTA_USE_INTERNAL_FLASH
//Tatol flash size 10000 = 64K
#define APP_BAT_START_ADDR (0x08010000 - (32*1024))
#define EATINFOR_BAT_ADDR (0x400000 - (36*1024))
#else
#define APP_BAT_START_ADDR (0x400000 - (64*1024))
#define EATINFOR_BAT_ADDR (0x400000 - (72*1024))
#define MQTT_ADDR_REDIR_START_ADDR (0)
#endif


#ifdef SW_SERVICE_FOR_PRO
#define SYS_VERSION 			12	//系统版本
#define DEVICE_TYPE				11
#else
#define SYS_VERSION 			9
#endif

//debug log
#ifdef SW_LOG_SYS_PRINTF
#define SYS_PRINTF(fmt, args...) fprintf(stderr,"  %s-%s-" fmt, __DATE__, __TIME__, ##args)
#endif
#ifdef SW_LOG_IMP_PRINTF
#define IMP_PRINTF(fmt, args...) fprintf(stderr,"  %s-%s-" fmt, __DATE__, __TIME__, ##args)
#endif
#ifdef SW_LOG_COM_PRINTF
#define COM_PRINTF(fmt, args...) fprintf(stderr,"  %s_%d___" fmt, __func__, __LINE__, ##args)
#endif

#ifdef SW_POWER_ON_WAIT	
#define	POWER_ON_DELAY	4	//上电等待，显示启动时间会相对长一点
#endif

//W

#define ToBin(n) \
(                    \
((n >> 21) & 0x80) | \
((n >> 18) & 0x40) | \
((n >> 15) & 0x20) | \
((n >> 12) & 0x10) | \
((n >>  9) & 0x08) | \
((n >>  6) & 0x04) | \
((n >>  3) & 0x02) | \
((n      ) & 0x01)   \
)
#define BIN(n)		ToBin(0x##n##l)	//write binary charactor set,exsample : Bin(11111111) = 0xff

#endif

